// store/configs.ts
import { defineStore } from 'pinia' // 引入Pinia核心函数
import { ref } from 'vue'         // 引入Vue响应式工具

// 1. 定义配置的「类型约束」（TypeScript接口）
interface AppConfig {
  theme: 'light' | 'dark'    // 主题：浅色/深色
  language: 'zh-CN' | 'en-US'// 语言：简体中文/英文
}

// 2. 创建「配置状态仓库」（独立的Pinia Store）
export const useConfigStore = defineStore('config', () => {
  // 3. 初始化配置：从本地存储读取（刷新不丢失），无则用默认值
  const initConfig = uni.getStorageSync('app_config') // 读取本地缓存的配置
  const config = ref<AppConfig>({
    theme: 'light',       // 默认浅色主题
    language: 'zh-CN',    // 默认简体中文
    ...(initConfig ? JSON.parse(initConfig) : {}) // 合并本地存储的配置（如果有）
  })

  // 4. 切换主题的方法
  const toggleTheme = () => {
    config.value.theme = config.value.theme === 'light' ? 'dark' : 'light'
    // 保存到本地存储（持久化）
    uni.setStorageSync('app_config', JSON.stringify(config.value))
  }

  // 5. 切换语言的方法
  const setLanguage = (lang: 'zh-CN' | 'en-US') => {
    config.value.language = lang
    uni.setStorageSync('app_config', JSON.stringify(config.value))
  }

  // 6. 返回状态和方法（供外部使用）
  return { config, toggleTheme, setLanguage }
})